//
//  StatusesViewModel.swift
//  SinaMicroBlog
//
//  Created by wxy on 15/9/7.
//  Copyright © 2015年 wxy. All rights reserved.
//

import UIKit

// 原创微博的可重用标识符
let StatusesNormalCellID = "StatusesNormalCellID"
// 转发微博的可重用标识符
let StatusesRepostCellID = "StatusesRepostCellID"

// 微博视图模型，供界面显示使用
class StatusesViewModel: NSObject {

    // 微博对象
    var statuses: Statuses
    // 当前模型对应行高
    var rowHeight: CGFloat = 0
    
    // 返回当前视图模型对应的可重用标识符
    var reuseCellID: String {
        return statuses.retweeted_status != nil ? StatusesRepostCellID : StatusesNormalCellID
    }
    
    // 被转发的原创微博文字 格式: @作者：原文
    var repostText: String? {
        
        let userName = statuses.retweeted_status?.user?.name ?? ""
        let text = statuses.retweeted_status?.text ?? ""
        
        return "@\(userName):\(text)"
    }
    
    // 头像URL
    var userIconUrl: NSURL? {
        
        return NSURL(string: statuses.user?.profile_image_url ?? "")
    }
    
    // TODO:计算型属性 不懂
    // 认证类型 -1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
    // imageWithNamed 能够缓存图像 所以计算型属性的效率不会受到影响
    // 这个方法不要加载太大图片 程序员无法释放内存
    // 设置计算型属性的时候 需要考虑性能
    var userVipImage: UIImage? {
        
        switch (statuses.user?.verified ?? -1) {
        case 0: return UIImage(named: "avatar_vip")
        case 2,3,5: return UIImage(named: "avatar_enterprise_vip")
        case 220: return UIImage(named: "avatar_grassroot")
        default: return nil
        }
    }
    
    var userMemberImage: UIImage? {
        
        if statuses.user?.mbrank > 0 && statuses.user?.mbrank < 7 {
            return UIImage(named: "common_icon_membership_level\(statuses.user!.mbrank)")
        }
        return nil
    }
    
    /// 如果是原创微博有图，在 pic_urls 数组中记录
    /// 如果是`转发微博`有图，在 retweeted_status.pic_urls 数组中记录
    /// 如果`转发微博`有图，那么pic_urls 数组中一定没有图 二选其一
    // 配图缩略图 数组
    var thumbnailURLs: [NSURL]?
    
    // TODO: - 现在有点明白为什么对statuses进行初始化了 传递模型数据
    init(statuses: Statuses) {
        
        self.statuses = statuses
        
        if let urls = statuses.retweeted_status?.pic_urls ?? statuses.pic_urls {
            
            // MARK: - 一定要初始化 要不然原创和转发微博 都没有配图
            thumbnailURLs = [NSURL]()
            
            for dict in urls {
                
                thumbnailURLs?.append(NSURL(string: dict["thumbnail_pic"]!)!)
            }
        }
        
        super.init()
    }
    
    override var description: String {
        
        return statuses.description + "缩略图 URL 数组 \(thumbnailURLs)"
    }
}
